struct LeftOver {
  /* @offset(0) */
  world : mat4x4<f32>,
  /* @offset(64) */
  exposureLinear : f32,
  /* @offset(68) */
  contrast : f32,
}

struct Scene {
  /* @offset(0) */
  viewProjection : mat4x4<f32>,
  /* @offset(64) */
  view : mat4x4<f32>,
  /* @offset(128) */
  projection : mat4x4<f32>,
  /* @offset(192) */
  vEyePosition : vec4<f32>,
}

struct Internals {
  /* @offset(0) */
  yFactor_ : f32,
  /* @offset(4) */
  textureOutputHeight_ : f32,
}

struct Material {
  /* @offset(0) */
  vPrimaryColor : vec4<f32>,
  /* @offset(16) */
  vPrimaryColorShadow : vec4<f32>,
  /* @offset(32) */
  vDiffuseInfos : vec2<f32>,
  /* @offset(40) */
  vReflectionInfos : vec2<f32>,
  /* @offset(48) */
  diffuseMatrix : mat4x4<f32>,
  /* @offset(112) */
  reflectionMatrix : mat4x4<f32>,
  /* @offset(176) */
  vReflectionMicrosurfaceInfos : vec3<f32>,
  /* @offset(188) */
  fFovMultiplier : f32,
  /* @offset(192) */
  pointSize : f32,
  /* @offset(196) */
  shadowLevel : f32,
  /* @offset(200) */
  alpha : f32,
}

struct Light0 {
  /* @offset(0) */
  vLightData : vec4<f32>,
  /* @offset(16) */
  vLightDiffuse : vec4<f32>,
  /* @offset(32) */
  vLightSpecular : vec4<f32>,
  /* @offset(48) */
  vLightGround : vec3<f32>,
  /* @offset(64) */
  shadowsInfo : vec4<f32>,
  /* @offset(80) */
  depthValues : vec2<f32>,
}

struct Light1 {
  /* @offset(0) */
  vLightData : vec4<f32>,
  /* @offset(16) */
  vLightDiffuse : vec4<f32>,
  /* @offset(32) */
  vLightSpecular : vec4<f32>,
  /* @offset(48) */
  shadowsInfo : vec4<f32>,
  /* @offset(64) */
  depthValues : vec2<f32>,
}

var<private> vPositionUVW : vec3<f32>;

var<private> position_1 : vec3<f32>;

@group(1) @binding(6) var<uniform> x_19 : LeftOver;

@group(0) @binding(0) var<uniform> x_33 : Scene;

var<private> vPositionW : vec3<f32>;

var<private> vNormalW : vec3<f32>;

var<private> normal : vec3<f32>;

@group(1) @binding(0) var<uniform> x_87 : Internals;

@group(1) @binding(1) var<uniform> x_98 : Material;

@group(1) @binding(2) var<uniform> light0 : Light0;

@group(1) @binding(3) var<uniform> light1 : Light1;

var<private> gl_Position : vec4<f32>;

const x_83 = vec2<f32>(0.0f, 0.0f);

fn main_1() {
  var finalWorld : mat4x4<f32>;
  var worldPos : vec4<f32>;
  var normalWorld : mat3x3<f32>;
  var uv : vec2<f32>;
  var uv2 : vec2<f32>;
  let x_12 : vec3<f32> = position_1;
  vPositionUVW = x_12;
  let x_24 : mat4x4<f32> = x_19.world;
  finalWorld = x_24;
  let x_35 : mat4x4<f32> = x_33.viewProjection;
  let x_36 : mat4x4<f32> = finalWorld;
  let x_38 : vec3<f32> = position_1;
  gl_Position = ((x_35 * x_36) * vec4<f32>(x_38.x, x_38.y, x_38.z, 1.0f));
  let x_49 : mat4x4<f32> = finalWorld;
  let x_50 : vec3<f32> = position_1;
  worldPos = (x_49 * vec4<f32>(x_50.x, x_50.y, x_50.z, 1.0f));
  let x_57 : vec4<f32> = worldPos;
  vPositionW = vec3<f32>(x_57.x, x_57.y, x_57.z);
  let x_65 : mat4x4<f32> = finalWorld;
  let x_66 : vec4<f32> = x_65[0u];
  let x_68 : vec4<f32> = x_65[1u];
  let x_70 : vec4<f32> = x_65[2u];
  normalWorld = mat3x3<f32>(vec3<f32>(x_66.x, x_66.y, x_66.z), vec3<f32>(x_68.x, x_68.y, x_68.z), vec3<f32>(x_70.x, x_70.y, x_70.z));
  let x_74 : mat3x3<f32> = normalWorld;
  let x_76 : vec3<f32> = normal;
  vNormalW = normalize((x_74 * x_76));
  uv = x_83;
  uv2 = x_83;
  let x_90 : f32 = x_87.yFactor_;
  let x_93 : f32 = gl_Position.y;
  gl_Position.y = (x_93 * x_90);
  return;
}

struct main_out {
  @location(2)
  vPositionUVW_1 : vec3<f32>,
  @builtin(position)
  gl_Position : vec4<f32>,
  @location(0)
  vPositionW_1 : vec3<f32>,
  @location(1)
  vNormalW_1 : vec3<f32>,
}

@vertex
fn main(@location(0) position_1_param : vec3<f32>, @location(1) normal_param : vec3<f32>) -> main_out {
  position_1 = position_1_param;
  normal = normal_param;
  main_1();
  return main_out(vPositionUVW, gl_Position, vPositionW, vNormalW);
}